The present invention relates to the testing of software, and more specifically, to the testing of graphical user interfaces (GUIs).
Software applications typically include various modules implementing business logic and include a graphical user interface allowing a user to interact with that business logic, e.g. by entering text via a keyboard or applying a mouse click on elements of the graphical interface. Before a program is released to the public, it typically requires extensive testing in order to ensure that the business function modules as well as the GUI operate correctly and reliably. GUI testing is complex and time-consuming: a software developer requires domain knowledge in order to create appropriate GUI test scenarios that cover all possible user actions or combination of user actions on said GUI. To execute such scenarios manually is highly time-consuming. Often, only a small fraction of the theoretically possible combinations and sequences of actions can be tested. On the other hand, automated GUI tests are highly inflexible. Development cycles in general have become shorter (in particular in agile software development) and software builds are often scheduled on a daily or even hourly basis. In such an agile testing scenario, specifying testing scripts is often not feasible as said scripts may become outdated within hours.